package DAO;
import java.sql.*;
import Fachada.Fachada;
import LogicaNegocio.*;
import java.util.Vector;

/**
 *
 * @author GEMA
 */
public class DAOAccion
{
    Fachada fachada;

    public DAOAccion()
    {
        fachada = new Fachada();
    }

    public int guardarAccion(Accion accion)
    {
        String sql_guardar;
        sql_guardar="INSERT INTO Accion(id_accion, descripcion_accion, departamento_accion) VALUES" +
                "('"+ accion.getIdAccion()+"','"+accion.getDescripcion()+"','"+accion.getDepartamento().getNombreDepartamento()+"'"+")";

        try
        {
            Connection conexion= fachada.ConexionBaseDatos();
            Statement sentencia=conexion.createStatement();
            int numFilas= sentencia.executeUpdate(sql_guardar);
            conexion.close();
            return numFilas;
        }
        catch(SQLException e)
        {
            System.out.println(e);
        }
        catch(Exception e)
        { System.out.println(e);
        }
        return -1;
    }

    public Vector<Accion> consultarAcciones()
    {
        String sql_select;
        sql_select = "SELECT * FROM Accion";
        Vector<Accion> acciones = new Vector<Accion>();

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next())
            {
                Departamento departamento = new Departamento (tabla.getString(3));
                Accion laAccion = new Accion(tabla.getString(1),tabla.getString(2),departamento);
                acciones.addElement(laAccion);
            }
            conn.close();
            System.out.println("Conexion cerrada");
            return acciones;

        }
        catch(SQLException e)
        {
            System.out.println(e) ;
            return null;
        }
        catch(Exception e)
        {
            System.out.println(e);
            return null;
        }
    }

    public int modificarDescripcionAccion(Accion accion)
    {
        String sql_modificar;
        sql_modificar = "UPDATE Accion "+
                        "SET descripcion_accion = '" + accion.getDescripcion() + "' " +
                        "WHERE id_accion = '" + accion.getIdAccion()+ "'";

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            int numFilas = sentencia.executeUpdate(sql_modificar);
            conn.close();
            return numFilas;
        }
        catch(SQLException e){System.out.println(e); }
        catch(Exception e){System.out.println(e); }
        return -1;
    }

    public int modificarDepartamentoAccion(Accion accion)
    {
        String sql_modificar;
        sql_modificar = "UPDATE Accion "+
                        "SET departamento_accion = '" + accion.getDepartamento().getNombreDepartamento() + "' " +
                        "WHERE id_accion = '" + accion.getIdAccion()+ "'";

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            int numFilas = sentencia.executeUpdate(sql_modificar);
            conn.close();
            return numFilas;
        }
        catch(SQLException e){System.out.println(e); }
        catch(Exception e){System.out.println(e); }
        return -1;
    }

    public int eliminarAccion(String idAccion)
    {
        String sql_modificar;
        sql_modificar = "DELETE FROM Accion "+
                        "WHERE id_accion = " + "'" +idAccion + "'";

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            int numFilas = sentencia.executeUpdate(sql_modificar);
            conn.close();
            return numFilas;
        }
        catch(SQLException e){System.out.println(e); }
        catch(Exception e){System.out.println(e); }
        return -1;
    }

    public Accion consultarAccion(String idAccion)
    {
        String sql_select;
        sql_select = "SELECT * FROM Accion "+
                        "WHERE id_accion = " + "'" +idAccion + "'";
        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);
            Accion laAccion = null;
            while(tabla.next())
            {
                Departamento departamento = new Departamento (tabla.getString(3));
                laAccion = new Accion(tabla.getString(1),tabla.getString(2),departamento);

            }
            conn.close();
            System.out.println("Conexion cerrada");
            return laAccion;
        }
        catch(SQLException e){System.out.println(e); }
        catch(Exception e){System.out.println(e); }
        return null;
    }
}
